--设置定时器
time = os.time();

--初始化
init("0",0);

mSleep(3000);
--来电暂停
luaExitIfCall(true);

--初始化日志
initLog("自动脚本1", 0)

--点击函数
function click(n,x,y)
	mSleep(500);
	touchDown(n,x,y);  
	mSleep(50);
	touchUp(n,x,y);
	mSleep(500);
end

function timeOut()
	--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		if os.time()-time>240 then
			lua_restart();
		end
end

--清理后台
function cleanAll()
	
	--新方法
	closeApp("*",1);
	wLog("自动脚本1", "[DATE] 清理后台");
	
end

function movettoo(n,x,y,a,b)
	-- body
	touchDown(n, x, y); --在坐标 (150, 550)按下
	mSleep(80);
	touchMove(n, a, b); --移动到坐标 (150, 600)，注意一次滑动的坐标间隔不要太大，不宜超过50像素
	mSleep(80);
	touchUp(n, a, b);   --在坐标 (150, 600) 抬起
end


--点击home键
function home()
	mSleep(500);
	--按下home键退出
	pressHomeKey(0);    --按下 Home 键
	mSleep(50);
	pressHomeKey(1);    --抬起 Home 键
	mSleep(500);
end


--颜色模糊判断
function isColor(x,y,c,s)   --封装函数，函数名 isColor
    local fl,abs = math.floor,math.abs
    s = fl(0xff*(100-s)*0.01)
    local r,g,b = fl(c/0x10000),fl(c%0x10000/0x100),fl(c%0x100)
    local rr,gg,bb = getColorRGB(x,y)
    if abs(r-rr)<s and abs(g-gg)<s and abs(b-bb)<s then
        return true
    end
end


function getline(filepath)
	
	--初始化一个对象
	local t={}
	
	--打开指定路径下的文件
	local file=io.open(filepath)
	
	--按行将文件内容写入对象
	for line in file:lines() do
		table.insert(t,line)
	end
	
	--获取对象第一个元素后删除第一个对象
	temp_line=table.remove(t,1)
	
	--以写方式打开指定路径
	local file=io.open(filepath,'w')
	
	--写入对象内容
	for i,j in ipairs(t) do
		file:write(j,'\n')
	end
	
	file:close()
	
	return temp_line
end


--主函数入口
function passWord()
	local emailtable={}
	
	mSleep(1000)
	--这里填写文件名，注意只需改动最后的文件名，文件路径别动
	email = getline('/User/Media/TouchSprite/lua/email.txt');
	
	if email==nil then
		dialog("文件读完了", 0)
		lua_exit()
	end
	
	i = string.find(email,'-');

	--邮箱
	emailtable[1] = string.sub(email,1,i-1);
	--密码
	emailtable[2] = string.sub(email,i+4,string.len(email));

	--规定用户名不得大于20字符，所以取邮箱@号前的字符串
	i = string.find(emailtable[1],'@');
	--用户名
	emailtable[3] = string.sub(emailtable[1],1,i-1);
		
	return emailtable
	
end


function newPhone()
	--初始化
	init("0",0);
	mSleep(1000);
	
	--进入NZT进行手机一键新机，重复打开4遍，防止闪退，闪退率高
	r = runApp("NZT"); 
	mSleep(2000)
	r = runApp("NZT");
	mSleep(2000)
	r = runApp("NZT");
	mSleep(2000)
	r = runApp("NZT"); 
	mSleep(2000);
	if r ~= 0 then
		lua_restart();
	end
	wLog("自动脚本1","[DATE] 进入NZT软件");
	mSleep(2000);
	
	--点一下返回按钮
	click(1,39,82);
	mSleep(2000);


	--点击清理keychain
	click(1,161,692);
	while (true) do
		wLog("自动脚本1","[DATE] 成功点击keychain按钮进入while判断");
		--如果出现错误，点击确定
		warningAll();
		if isColor(321,545,0x434343,90) then
			mSleep(2000);
		elseif isColor(321,545,0xffffff,90) then
			break;
		end
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
	end
	
	mSleep(2000);
	
	--点击清理safari
	click(1,501,689);
	while (true) do
		wLog("自动脚本1","[DATE] 成功点击safari按钮进入while判断");
		--如果出现错误，点击确定
		warningAll();
		if isColor(321,545,0x434343,90) then
			mSleep(2000);
		elseif isColor(321,545,0xffffff,90) then
			break;
		end
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
	end
	
	
	mSleep(2000);
	
	--点击一键新机
	click(1,489,822);
	while (true) do
		wLog("自动脚本1","[DATE] 成功点击一键新机按钮进入while判断");
		--如果出现错误，点击确定
		warningAll();
		if isColor(321,545,0x434343,90) then
			mSleep(2000);
		elseif isColor(321,545,0xffffff,90) then
			break;
		end
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
	end
	
	mSleep(2000);
	
	home();
	
	
end


function playGame()
	
	--初始化
	init("0",0);
	mSleep(1000);
	
	--点击浏览器
	r = runApp("com.apple.mobilesafari");    
	mSleep(2000);
	if r ~= 0 then
		lua_restart();
	end
	mSleep(2000);
	
	--随便点个地方，除了按钮，排除意外情况
	click(1,332,369);
	mSleep(1000);
	
	--接下来点击准备输入网址
	click(1,276,75);
	mSleep(2000);   
	
	inputText("http://click.idvert.click/clk?aff_id=731&off_id=2508&lp_id=1");
	
	--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
	
	mSleep(3000);
	click(1,600,1108);
	wLog("自动脚本1","[DATE] 成功点击safari并输入网址开始");
	
	
	
	--开始循环判断是否弹出打开app商城的按钮
	while (true) do
		warningAll();
		if isColor(418,650,0xb7d7fb,90) then
			mSleep(500);
			click(1,418,650);
			mSleep(1000);
			break;
		end
		wLog("自动脚本1","[DATE] 进入while循环判断打开app商城按钮是否出现");
		
	--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
		
		--循环判断是否出现proxy error
		if isColor(21,154,0x565656,90) then
			mSleep(500);
			click(1,590,76);
			mSleep(8000);
		end
		--循环判断continue
		if isColor(17,161,0x6a6af5,90) then
			mSleep(500);
			click(1,153,164);
			mSleep(8000);  
		end
	end
	
	mSleep(3000);
	
	--开始循环判断是否成功打开app商城并点击进入软件
	while (true) do
		wLog("自动脚本1","[DATE] 这是判断进入软件按钮出现的循环");
		warningAll();
		
	--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
		
		vvv = isColor(497,330,0xffffff,90);
		if vvv~=true then
			wLog("自动脚本1","[DATE] 现在点击进入软件");
			Randomx = math.random(25,40);
			dialog(Randomx, 3);
			timeOut();
			mSleep(Randomx*1000);
			click(1,554,328);
			break;
		end
		mSleep(2000);
		
	end
	
	mSleep(1000);
	
	-------------------------------------------------------------------------
	--此处调用函数，读取文件名已经密码
	-------------------------------------------------------------------------
	PW = passWord();
	
	--dialog("进入游戏了", 3)
	mSleep(3000);
	
	--进入注册环节,先点击sign up
	while (true) do
		if isColor(317,908,0xcae9fb,90) then
			mSleep(500);
			click(1,317,908);
			mSleep(1500);
			break;
		end
	end
	
	--点击输入名称
	while (true) do
		if isColor(51,317,0x909da8,90) then
			mSleep(500);
			click(1,51,317);
			mSleep(1000);
			inputText(PW[3]);
			mSleep(1000);
			
			while (true) do
				if isColor(567,652,0x1da1f2,90) then
					--点击next
					mSleep(500);
					click(1,567,652);
					mSleep(1500);
					break;
				end
			end
			
			break;
		end
	end
	
	
	
	
	
	--点击准备输入邮箱
	while (true) do
		if isColor(337,691,0xacd8f3,90) then
			mSleep(500)
			click(1,337,691)
			mSleep(500)
		end
		
		if isColor(53,378,0xbfc7cd,90) then
			mSleep(500);
			click(1,53,378);
			mSleep(1000);
			inputText(PW[1]);
			mSleep(1000);
			
			while (true) do
				if isColor(567,652,0x1da1f2,90) then
					--点击next
					mSleep(500);
					click(1,567,652);
					mSleep(1500);
					break;
				end
			end
			
			break;
		end
	end
	
	--点击准备输入密码
	while (true) do
		if isColor(51,376,0xa8b2bb,90) then
			mSleep(500);
			click(1,51,376);
			mSleep(1000);
			inputText(PW[2]);
			mSleep(1000);
			
			while (true) do
				if isColor(567,652,0x1da1f2,90) then
					--点击next
					mSleep(500);
					click(1,567,652);
					mSleep(1500);
					break;
				end
			end
			--少写这个break让我花了一个下午时间找错，结果在17：40发现了这个问题，在此留个纪念
			break;
		end
	end

	
	--跳过Phone number
	while (true) do
		--初始化
		init("0",0);
		mSleep(1000);
		
		if isColor(87,1091,0x86c6ee,90) then
			mSleep(500);
			click(1,87,1091);
			mSleep(2000);
			--点击点击i'm sure
			click(1,472,687);
			mSleep(1000);
			break;
		end
	end
	
	--跳过what shold we call you?
	while (true) do
		if isColor(87,1091,0x86c6ee,90) then
			mSleep(500);
			click(1,87,1091);
			mSleep(2000);
			break;
		end
	end
	
	--跳过what are you interested in?
	while (true) do
		if isColor(54,1095,0x7dc2ed,90) then
			mSleep(500);
			click(1,54,1095);
			mSleep(2000);
			break;
		end
	end
	
	--跳过want to find friends and see who they follow?
	while (true) do
		if isColor(325,1038,0xbbe2fc,90) then
			mSleep(500);
			click(1,325,1038);
			mSleep(2000);
			break;
		end
	end
	
	--跳过make your timeline yours
	while (true) do
		if isColor(541,1092,0x90d1f9,90) then
			mSleep(500);
			click(1,541,1092);
			mSleep(2000);
			break;
		end
	end
	
	--跳过want notifications when people follow you or send you a message?
	while (true) do
		if isColor(325,1037,0xaadbfa,90) then
			mSleep(500);
			click(1,325,1037);
			mSleep(2000);
			break;
		end
	end
	
	
	--随机一个数（这个随机数是随意设置的，就是要保证大于5分钟）
	Randomx = math.random(100,200);
	dialog(Randomx, 3);
	oldTime = 1;
	while (true) do
		
		wLog("自动脚本1","[DATE] 玩游戏循环");
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
		
		oldTime = oldTime+1;
		movettoo(1,312,700,312,500);
		mSleep(3000);
		
		warningAll();
		
		--如果一段时间内没有检测到，则判断为任务失败，结束脚本。
		timeOut();
		
		if (Randomx%oldTime)==0 then
			click(1,210,712);
		end
		
		if (Randomx%oldTime)==1 then
			movettoo(1,312,400,312,700);
		end
		
		mSleep(2000);
		if oldTime==Randomx then
			break;
		end
	end
 	
	dialog("Game Over", 5);
end


function warningAll()
	if isColor(327,671,0x007aff,90) then
			wLog("自动脚本1", "[DATE] 这是警告四判断")
			mSleep(2000);
			click(1,327,671);
			mSleep(2000);
			click(1,580,690);
	elseif isColor(340,664,0x007aff,90) then
			wLog("自动脚本1", "[DATE] 这是警告五判断")
			mSleep(2000);
			click(1,340,664);
			mSleep(2000);
	end
end

--清理后台
function cleanAll()
	
	--新方法
	closeApp("*",1);
	wLog("自动脚本1", "[DATE] 清理后台");
	
end




function main()
	
	mSleep(1000);
	cleanAll();
	mSleep(1000);
	
	home();
	mSleep(1000);
	
	--第一步关闭vpn
	setVPNEnable(false);
	mSleep(2000);
	
	--第二步初始化手机
	newPhone();
	mSleep(3000);
	
	--第三步开启vpn
	setVPNEnable(true);
	mSleep(3000); 
		
	--开始任务
	playGame();
	
end


main();
